package com.tedu.food.sys.dao;

import com.tedu.food.common.vo.CategoryVo;
import com.tedu.food.sys.entity.Category;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * CategoryDao类用于描述商品分类信息
 * 
 * @author 作者:tiankun
 * @createdTime 创建时间 :2019年11月22日 上午10:51:24
 */

@Mapper
public interface CategoryDao {
	/***
	 * 根据类名(categoryName)进行模糊查询
	 * 
	 * @param categoryName 用户传入的名称
	 * @return 返回查询到的数据行数
	 * @author Daniel
	 * @version 创建时间：2019年11月22日 上午10:42:49
	 * 
	 */
	int getRowCount(@Param("categoryName") String categoryName);

	/***
	 * 根据用户传入类名进行模糊以及按分页查询Category信息
	 * 
	 * @param categoryName 类目名称
	 * @param startIndex   开始页码
	 * @param pageSize     页面大小
	 * @return 返回类目信息列表
	 * @author Daniel
	 * @version 创建时间：2019年11月22日 上午10:44:57
	 */
	List<Category> findCategoryObject(@Param("categoryName") String categoryName,
			@Param("startIndex") Integer startIndex, @Param("pageSize") Integer pageSize);

	/***
	 * 添加类目数据
	 * 
	 * @author Daniel
	 * @version 创建时间：2019年11月22日 上午11:04:59
	 * @param category
	 * @return 返回影响行数
	 */
	int insertCategoryObject(Category category);

	/***
	 * 根据传入ids删除类目数据
	 * 
	 * @author Daniel
	 * @version 创建时间：2019年11月22日 上午11:15:08
	 * @param ids
	 * @return 返回影响行数
	 */
	int deleteCategoryObjectById(@Param("ids") Integer... ids);

	/***
	 * 修改类目信息
	 * 
	 * @author Daniel
	 * @version 创建时间：2019年11月22日 上午11:34:16
	 * @param category
	 * @return 返回影响行数
	 */
	int updateCategoryObject(Category category);

	/***
	 * 根据id查询类目信息
	 * 
	 * @author Daniel
	 * @version 创建时间：2019年11月24日 下午2:52:44
	 * @param id
	 * @return
	 */
	@Select("select * from category where id=#{categoryId}")
	Category findCategoryObjectById(Integer categoryId);

	List<CategoryVo> findAllCategoryGoods();

	@Select("select * from category where category_name=#{categoryName}")
	int categoryNameIsExists(@Param("categoryName") String filedValue);

}
